Skip to content

feat(libSceWebBrowserDialog): open predetermined content like the browser dialog - #10

Closed
KernelPanicNT wants to merge 1 commit into
mainfrom
feat/libscewebbrowserdialog-predetermined-content
Closed

KernelPanicNT wants to merge 1 commit into
mainfrom
feat/libscewebbrowserdialog-predetermined-content

Conversation

@KernelPanicNT

Copy link
Copy Markdown
Owner

What

Implements sceWebBrowserDialogOpenForPredeterminedContent. sceWebBrowserDialogSetCookie and sceWebBrowserDialogResetCookie are not part of this PR and still throw.

Source of the behaviour. No console measurement is involved.

Changes:

  • sceWebBrowserDialogOpenForPredeterminedContent takes the two-pointer signature and answers as sceWebBrowserDialogOpen, in the same order: NOT_INITIALIZED (0x80B80003) before sceWebBrowserDialogInitialize, BUSY (0x80B80007) while running, ARG_NULL (0x80B8000D) for a null dialog parameter. Otherwise the status becomes FINISHED.
  • The allowed domains are not read, because no page is loaded.
  • A null predetermined content parameter, or one whose size is not 424, throws std::invalid_argument: the console's error codes for these are unknown. The status is left unchanged.
  • guest_web_browser_dialog covers: the call before initialization, the null dialog parameter, both throwing cases (status stays INITIALIZED), a valid call followed by the FINISHED status and the USER_CANCELED result, a second call from FINISHED, and termination.
  • New docs/dev/debt/libSceWebBrowserDialog.md records the signature and layout source, the unread domains and the throwing cases under Unknown function info.

Still throwing:

  • sceWebBrowserDialogSetCookie and sceWebBrowserDialogResetCookie. With no browser, a cookie store would have no reader, so implementing them now would only add a silent stub.

Progress: libSceWebBrowserDialog 7/10 → 8/10.

Tested

Head dbfb383ee58c3d0695b02875825f9d822bc10d8e, base a453108cf7768b71879b0e832d367a935c43440d.

  • Linux (Ubuntu 22.04, GCC 12.3.0, Ninja, Release, BUILD_TESTING=ON, tests run under QEMU 8.2 user mode with -cpu EPYC-Rome because the build host lacks AVX2): guest_web_browser_dialog_tests 5/5 passes.
  • Negative control: keep the tests and replace only core/libs/prx/libSceWebBrowserDialog/Export.cpp with the base version: guest_web_browser_dialog_tests fails with sceWebBrowserDialogOpenForPredeterminedContent not implemented. Restoring the PR source and rebuilding passes guest_web_browser_dialog_tests 5/5.
  • Windows: fork Build workflow pending; result added here when it finishes.
  • Conventions checker and git diff --check pass. The Linux job of the Build workflow now targets the project's self-hosted runner, so it was not run on the fork; no title was run.

Duplicate and overlap check

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Unblocks: none
  • GPUs tested: n/a
  • AI-assisted: yes (Claude)

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Progress report (e34c479 → d58442b)

📈 System libraries: 88.73% (+0.02%, +1 implemented functions)

✅ 1 implemented
Library Name
libSceWebBrowserDialog sceWebBrowserDialogOpenForPredeterminedContent

…wser dialog

sceWebBrowserDialogOpenForPredeterminedContent takes the
(param, predeterminedContentParam) signature and the 424-byte parameter
of SharpProspero. It answers as sceWebBrowserDialogOpen: NOT_INITIALIZED
before initialization, BUSY while running, ARG_NULL for a null dialog
parameter, and otherwise finishes at once with the user-cancelled
result, since there is no browser to show. A null predetermined content
parameter or a size other than 424 throws, as its error code is unknown.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@KernelPanicNT
KernelPanicNT force-pushed the feat/libscewebbrowserdialog-predetermined-content branch from dbfb383 to d58442b Compare October 14, 2026 16:53
@KernelPanicNT

Copy link
Copy Markdown
Owner Author

Withdrawn: open upstream PR boykopovar#5904 already implements sceWebBrowserDialogOpenForPredeterminedContent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant